# 定时器

# setTimeout

采用

setTimeout(handler: TimerHandler, timeout?: number, ...arguments: any[])

  • 在 millisec 毫秒后只执行一次函数代码串

  • 推荐传递函数或者函数的引用

  • 不推荐代码串,因为会涉及欺骗词法作用域,造成 JS 引擎认为该内容视为好像在书写时(词法期)就存在于程序中这个位置的代码,且性能下降

clearTimeout():清除setTimeout设置的定时器

// var id = setTimeout("alert('abc');", 1000); // 不推荐

// 返回的 timer 是定时器的顺序,如1,2,3
var timer = setTimeout(() => {
  console.log(666);
}, 1000);

# setInterval

setInterval(code,millisec)

  • 每隔 millisec 毫秒执行一次函数代码串

  • 推荐传递函数或者函数的引用

  • 不推荐代码串,因为会涉及欺骗词法作用域,造成 JS 引擎认为该内容视为好像在书写时(词法期)就存在于程序中这个位置的代码,且性能下降

clearInterval():清除setInterval设置的定时器

// var id = setTimeout("alert('abc');", 1000); // 不推荐

// 返回的 timer 是定时器的顺序,如1,2,3
var timer = setInterval(() => {
  console.log(666);
}, 1000);

// 清除定时器
setTimeout(() => {
  clearInterval(timer);
}, 5000);